package log

import (
	"log"

	"go.uber.org/zap"
)

// UnpackLogger 从包装后的 logger 返回底层的 *zap.Logger 。
func UnpackLogger() *zap.Logger {
	return _defaultLogger.logger
}

// ZapSugaredLogger 从包装后的 logger 返回底层的 *zap.SugaredLogger 。
func ZapSugaredLogger() *zap.SugaredLogger {
	return _defaultLogger.logger.Sugar()
}

// StdErrorLogger 从包装后的 logger 返回一个兼容log包的 error 级别 logger 。
func StdErrorLogger() *log.Logger {
	if _defaultLogger == nil {
		return nil
	}

	if logger, err := zap.NewStdLogAt(_defaultLogger.logger, ErrorLevel); err == nil {
		return logger
	}

	return nil
}

// StdInfoLogger 从包装后的 logger 返回一个兼容log包的 info 级别 logger 。
func StdInfoLogger() *log.Logger {
	if _defaultLogger == nil {
		return nil
	}

	if logger, err := zap.NewStdLogAt(_defaultLogger.logger, InfoLevel); err == nil {
		return logger
	}

	return nil
}
